--[[
    Lua 编程语言中 for 循环语句可以重复执行指定语句，重复次数可在 for 语句中控制。
    Lua 编程语言中 for语句有两大类：
        数值 for 循环
        泛型 for 循环
]]
--[[
    数值 for 循环
    Lua 编程语言中数值for循环语法格式:
        for var=exp1,exp2,exp3 do  
            <执行体>  
        end 
    var从exp1变化到exp2，
    每次变化以exp3为步长递增var，
    并执行一次"执行体"。
    exp3是可选的，如果不指定，默认为1。
--]]
for val = 1, 10, 2 do
    print(val)
end

-- for的三个表达式在循环开始前一次性求值，以后不再进行求值。
function f(x)
    print("function")
    return x * 2
end
for i = 1, f(5) do
    print(i)
end

--[[
    泛型 for 循环
    泛型for循环通过一个迭代器函数来遍历所有值，类似java中的foreach语句。
    Lua 编程语言中泛型for循环语法格式:
        for i,v in ipairs(a) 
            do print(v) 
        end   
    i是数组索引值，v是对应索引的数组元素值。
    ipairs是Lua提供的一个迭代器函数，用来迭代数组。
--]]
days = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}
for i, v in ipairs(days) do
    print(v)
end
